A template definition:
template <class T>class vector { ... }
specialized:
template <> class vector<bool> { ... }
The real template definition:
template <class T, class Allocator = allocator<T> >class vector {... }
specialized for T and the default allocator:
template <>class vector<bool, allocator<bool> > // note space, not ">>" { ... }
The real template definition:
template <class T, class Allocator = allocate<T> > // note space class vector { ... }
specialized for T, but not for Allocator:
template <class Allocator>class vector<bool, Allocator>{ ... } template <class T, class Allocator>class vector<T*, Allocator>{ ... }